/*!
 * web前端通用脚本库
 * 当前版本：1.0
 * 创建人：雷志强
 * 创建时间：20180920
 * 需要引用jquery.js脚本库配合使用
 */
window.zutils = window.zutils || {};
window.zutils = {
	formatDate:function(format,date){
		var o = {
			"M+": date.getMonth() + 1, //月份   
			"d+": date.getDate(), //日   
			"h+": date.getHours(), //小时   
			"m+": date.getMinutes(), //分   
			"s+": date.getSeconds(), //秒   
			"q+": Math.floor((date.getMonth() + 3) / 3), //季度   
			"S+": date.getMilliseconds() //毫秒
		};
		if(/(y+)/i.test(format)){//判断年份格式
			format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
		}
		for(var k in o){
			if(new RegExp("(" + k + ")").test(format)){
				var sindex = ("00"+o[k]).length - RegExp.$1.length;
				format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(sindex));
			}
		}
		return format;
	},
	dateString2Date:function(dateString){
		var year = parseInt(dateString.substring(0,4),10);
		var month = parseInt(dateString.substring(5,7),10)-1*1;
		var date = parseInt(dateString.substring(8,10),10);
		var hour = parseInt(dateString.substring(11,13),10);
		var minute = parseInt(dateString.substring(14,16),10);
		var second = parseInt(dateString.substring(17,19),10);
		var d = new Date(year,month,date,hour,minute,second);
		return d;
	}
}

function DateUtil(){
	var SECOND = 1;//秒
	var MINUTE = 60;//分：60秒
	var HOUR = 60*60;//小时：3600秒
	var DATE = 60*60*24;//天
	//按指定格式格式化日期时间
	this.formatDate = function(format,date){
		var o = {
			"M+": date.getMonth() + 1, //月份   
			"d+": date.getDate(), //日   
			"H+": date.getHours(), //小时   
			"m+": date.getMinutes(), //分   
			"s+": date.getSeconds(), //秒   
			"q+": Math.floor((date.getMonth() + 3) / 3), //季度   
			"S+": date.getMilliseconds() //毫秒
		};
		if(/(y+)/i.test(format)){//判断年份格式
			format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
		}
		for(var k in o){
			if(new RegExp("(" + k + ")").test(format)){
				var sindex = ("00"+o[k]).length - RegExp.$1.length;
				format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(sindex));
			}
		}
		return format;
	}
	//将日期时间按指定格式转化成字符串
	this.date2String = function(formater,date){
		if(formater==null || formater==""){
			formater = "yyyy-MM-dd HH:mm:ss";
		}
		if(date==null || date==""){
			date = new Date();
		}
		return this.formatDate(formater,date);
	}
	//将当前日期时间按指定格式转化成字符串
	this.nowDate2String = function(formater){
		return this.formatDate(formater,new Date());
	}
	//将标准日期时间格式(yyyy-MM-dd HH:mm:ss)字符串转成日期对象
	this.dateString2Date = function(dateString){
		var year = parseInt(dateString.substring(0,4),10);
		var month = parseInt(dateString.substring(5,7),10)-1*1;
		var date = parseInt(dateString.substring(8,10),10);
		var hour = parseInt(dateString.substring(11,13),10);
		var minute = parseInt(dateString.substring(14,16),10);
		var second = parseInt(dateString.substring(17,19),10);
		var d = new Date(year,month,date,hour,minute,second);
		return d;
	}
	//将标准日期时间格式(yyyy-MM-dd HH)字符串转成日期对象
	this.dateString2Date2 = function(str){
		var yearMouthDay = str.substring(0,10);
		var hour = parseInt(str.substring(11,13),10);
		var date = yearMouthDay + " " + hour + ":00:00" ;
		return date ;
	}
	//通过秒计算时间差{dateString:标准时间字符串2013-08-07 12:00:00,amount:时间差数值[正数则是计算后面的时间，负数则是计算前面的时间]}
	this.calculateBySecond = function(dateString,amount){
		return this.calculate(dateString,SECOND,amount);
	}
	//通过分钟计算时间差{dateString:标准时间字符串2013-08-07 12:00:00,amount:时间差数值[正数则是计算后面的时间，负数则是计算前面的时间]}
	this.calculateByMinute = function(dateString,amount){
		return this.calculate(dateString,MINUTE,amount);
	}
	//通过小时计算时间差{dateString:标准时间字符串2013-08-07 12:00:00,amount:时间差数值[正数则是计算后面的时间，负数则是计算前面的时间]}
	this.calculateByHour = function(dateString,amount){
		return this.calculate(dateString,HOUR,amount);
	}
	//通过天计算时间差{dateString:标准时间字符串2013-08-07 12:00:00,amount:时间差数值[正数则是计算后面的时间，负数则是计算前面的时间]}
	this.calculateByDate = function(dateString,amount){
		return this.calculate(dateString,DATE,amount);
	}
	//通过指定的类型,时间差值计算时间差
	this.calculate = function(dateString,field,amount){
		var d = this.dateString2Date(dateString);
		var oldtime = d.getTime();
		var space = field*amount*1000;
		var newtime = oldtime + space;
		var newDate = new Date(newtime);
		return this.date2String("yyyy-MM-dd HH:mm:ss",newDate);
	}
	/** 比较两个日期时间大小,返回时间差
	* startDate:开始时间,标准时间字符串2013-08-07 12:00:00
	* endDate:结束时间,标准时间字符串2013-08-07 12:00:00
	* 返回两个时间的差,正数说明开始时间比结束时间小，反之比它大
	*/
	this.diffDateTime = function(startDate,endDate){
		var sDate = this.dateString2Date(startDate);
		var eDate = this.dateString2Date(endDate);
		var time = null;
		if(sDate!=null&&eDate!=null){
			time = eDate.getTime()-sDate.getTime();
		}
		return time;
	}
}
//定义日期工具类
var dateUtil = new DateUtil();